The present invention relates to microprogram controllers, and more particularly to a high speed controller which performs certain operations in parallel with other operations.
All microprogram controllers control the sequence of one microinstruction to the next. A microinstruction is a gate level instruction residing in microprogram store which controls "AND" gates, "OR" gates, memory elements, etc., in a manner required to execute a portion of a higher level (assembly language) instruction. Some of the gates that are controlled make up the microprogram controller itself. Therefore, each microinstruction accessed by the controller has embedded within it a "microprogram controller instruction" field for the microprogram controller telling it how to fetch the next microinstruction. A set of microinstructions may be required to execute one higher level instruction.
Microprogram controllers generally provide three basic methods of accessing the next microinstruction. The next microinstruction may be:
1. "continued to"--accessed from the next sequential address in microprogram store;
2. "branched to"--accessed from an address supplied by the current microinstruction;
3. "returned to"--accessed from an address supplied by a stack.
Usually microprogram controllers are built such that a decision of which of the three methods is used can be based on an external status input. For example, the microprogram controller may perform a "branch" if the status input indicates a pass condition, or a "continue" if the input indicates a fail condition.
Conventional "serial process" microprogram controllers must first choose which of the three methods will be used to access the next microinstruction. The microprogram controller then provides the selected address (continue, branch, or return) to the microcode store to access the next microinstruction. A disadvantage of such controllers is the serial nature (and its slower speed) of the process used to generate the next gate level instruction or microword.